Sub-Phase 1.3: Unified Assembly
Compose facets without bias.
Objective
- Call adapters in parallel
- One failure must not block the other
- Always return: identity, availability, zero, one, or two facets
Per Phase 0:
- Partial responses are valid
- Absence must always be explicit
- Silent defaults are forbidden
Exit Criteria
- Output matches Phase 0 schema exactly
- Both repositories called in parallel
- Ethos failure does not block Talent (and vice versa)
- Returns
UnifiedProfilewith:identity(always present)availability(always present, explicit states)ethos(present only whenavailability.ethos === 'available')talent(present only whenavailability.talent === 'available')
- Configuration injected via
SDKConfig - Never throws on valid input
Design Decisions
Parallel Execution
Both repositories are called concurrently using Promise.allSettled.
Rationale:
Promise.allwould fail-fast on first rejectionPromise.allSettledallows both to complete independently- Matches requirement: "One failure must not block the other"
Conditional Facet Inclusion
Facets are included if and only if availability === 'available'.
// CORRECT: Conditional property inclusion
...(ethosResult.availability === 'available' && ethosResult.facet
? { ethos: ethosResult.facet }
: {}),
// WRONG: Always including with undefined
ethos: ethosResult.facet, // undefined when not available
Output Examples
Both Available
{
"identity": { "address": "0xabc..." },
"availability": { "ethos": "available", "talent": "available" },
"ethos": { "data": {...}, "signals": {...}, "meta": {...} },
"talent": { "data": {...}, "signals": {...}, "meta": {...} }
}
Ethos Available, Talent Not Found
{
"identity": { "address": "0xabc..." },
"availability": { "ethos": "available", "talent": "not_found" },
"ethos": { "data": {...}, "signals": {...}, "meta": {...} }
}
Both Error
{
"identity": { "address": "0xabc..." },
"availability": { "ethos": "error", "talent": "error" }
}
Exit Checklist
Schema Compliance
- Output matches Phase 0
UnifiedProfileexactly -
identityalways present withaddress -
availabilityalways present with both states -
ethospresent only whenavailability.ethos === 'available' -
talentpresent only whenavailability.talent === 'available'
Execution
- Both repositories called in parallel (
Promise.allSettled) - Ethos failure does not block Talent
- Talent failure does not block Ethos
- Never throws on valid input
Phase 0 Neutrality
- No interpretation of data
- No ranking or judgment
- Absence is explicit, not hidden